The disclosure relates to the field of Web-based applications and, more particularly, to enhancing client-side object caching for Web-based applications.
Web 2.0 applications have become increasingly modular in both core application and user interface design. Many times, a single application interface is composed of several independent sub-components referred to as “widgets”. Widgets typically utilize objects (e.g., JAVASCRIPT object) to perform operations and execute functionality. Many times widgets utilize objects and object data to present information within an interface. For example, a stock ticker widget can utilize stock market data within an object to present trending information for one or more stocks. Due to the dynamic nature of most widgets, caching of appropriate objects can be indeterminable. For instance, user interactions with widgets dictate what information and consequently which objects the widgets require.
In very rich/dynamic interfaces these objects often include common data (e.g., object attributes) which can be used by several widgets. Since the widgets typically are isolated from other widgets to maintain modularity and flexibility, this often results in redundant requests and/or transmission of this common data. That is, widgets often request the same common data (e.g., objects) frequently that other widgets previously requested. Consequently, network and server resources can be unduly taxed from this superfluous communication.
Current approaches to this problem include traditional browser caches which cache objects on the client-side. However, traditional cache systems do not provide a means for sharing this common data. As such, there is no mechanism to determine which common data can be shared. Further, traditional caches cannot progressively reduce requests to server resources as they do not enable reconstruction of server-side data models.